1

1.JSON语法

JSON是一种轻量级的数据交换格式。
JSON语法可以表示以下三种类型的值:

  • 简单值:string,number,boolean,null,不支持undefined

  • 对象

  • 数组

语法:

  1. JSON字符串必须使用双引号

  2. 没有声明变量

  3. 没有末尾的分号

2.JSON解析与序列化

2.1JSON序列化

序列化函数:JSON.stringify()
JSON.stringify()可接收三个参数:

  • 要序列化的JavaScript对象

  • 一个过滤器(可以是一个数组也可以是一个函数)

  • 控制结果中的缩进和空白符
    用法1:过滤结果

//数组过滤器
var book = {
                "title":"Professional JavaScript",
                "edition":3,
                "year":2011,
                "authors":[
                    "EvanChen",
                    "Nicholas"
                ]
            };
var jsonText = JSON.stringify(book,["title","edition"]);//jsonText 中只包含title,edition两个属性
//函数过滤器
var book = {
                "title":"Professional JavaScript",
                "edition":3,
                "year":2011,
                "authors":[
                    "EvanChen",
                    "Nicholas"
                ]
            };
var jsonText = JSON.stringify(book,function(key,value){
    switch(key){
            case:"authors":
                return value.join(",");
            case:"year":
                return 5000;
            case:"edition":
                return undefined;//相当于删除该属性
            default:
                return value;

        }
   }             
 );//jsonText 中只包含title,edition两个属性

用法2:字符串缩进

var book = {
                "title":"Professional JavaScript",
                "edition":3,
                "year":2011,
                "authors":[
                    "EvanChen",
                    "Nicholas"
                ]
            };
var jsonText = JSON.stringify(book, null,4);
console.log(jsonText);
//输出结果
{
    "title": "Professional JavaScript",
    "edition": 3,
    "year": 2011,
    "authors": [
        "EvanChen",
        "Nicholas"
    ]
}

2.2解析选项

函数:JSON.parse()
JSON.parse()可接收两个参数

  • JSON数据

  • 还原函数,该函数将在每个键值对上调用

var book = {
                "title":"Professional JavaScript",
                "edition":3,
                "year":2011,
                "authors":[
                    "EvanChen",
                    "Nicholas"
                ],
                releaseDate:new Date(2011,11,1)
            };
var jsonText = JSON.stringify(book);

var bookCopy = JSON.parse(jsonText,function(key,value){
        if(key==="releaseDate"){
            return new Date(value);
        } else{
            return value;
        }
    }
);
console.log(bookCopy.releaseDate.getFullYear());

Evan_Chen
130 声望5 粉丝